<

enterText メソッドを変更して、キャレットを入力テキストの末尾に移動します。

まとめ

WidgetTester.enterTextTestTextInput.enterTextメソッド 次に、キャレットを入力テキストの末尾に移動します。

コンテクスト

キャレットは、現在のテキスト内の挿入ポイントを示します。 アクティブな入力フィールド。通常、新しい文字が入力されると、 キャレットはその直後に残ります。 Flutter では、キャレットの位置は次のとおりです。 折りたたまれた選択範囲で表されます。選択が無効な場合は、 通常、ユーザーはテキストを変更したり追加したりすることはできません。 選択を有効な値に変更します。

WidgetTester.enterTextTestTextInput.enterText2つの方法があります ターゲット テキスト フィールドの内容を置き換えるためにテストで使用されます。前 この変化に対して、WidgetTester.enterTextTestTextInput.enterText選択範囲を無効な範囲 (-1、-1) に設定し、 選択やキャレットはありません。これは、典型的な行動と矛盾します。 入力フィールド。

変更内容の説明

テキストを提供されたテキストに置き換えるだけでなく、WidgetTester.enterTextTestTextInput.enterText今すぐ設定してください への選択TextSelection.collapsed(offset: text.length)、 その代わり のTextSelection.collapsed(offset: -1)

移行ガイド

テストが 以前の行動enterText、通常は選択なので 無効であってはなりません。の期待値を変更することを検討してください。 を採用するためのテストenterText変化。

この変更により発生する可能性のある一般的なテスト障害には次のものがあります。

  • ゴールデン テストの失敗:

    以前とは異なり、キャレットがテキストの最後に表示されます。 変更前の本文です。

  • 違うTextEditingValue.selection電話した後enterText:

    テキストフィールドのTextEditingValue今は崩壊しています 負でないオフセットでの選択とは対照的に、TextSelection.collapsed(offset: -1)変更前。 たとえば、次のようになります。expect(controller.value.selection.baseOffset, -1);後で失敗するenterText呼び出します。

テストで選択を無効に設定する必要がある場合は、 以前の動作は次を使用して実現できますupdateEditingValue:

TestTextInput.enterText

移行前のコード:

await testTextInput.enterText(text);

移行後のコード:

await testTextInput.updateEditingValue(TextEditingValue(
  text: text,
));

WidgetTester.enterText

移行前のコード:

await tester.enterText(finder, text);

移行後のコード:

await tester.showKeyboard(finder);
await tester.updateEditingValue(TextEditingValue(
  text: text,
));
await tester.idle();

タイムライン

リリースされたバージョン: 2.1.0-13.0.pre
安定版リリース: 2.5

参考文献

API ドキュメント:

  • WidgetTester.enterText
  • TestTextInput.enterText

関連する問題:

  • 問題 79494

関連する PR:

  • EnterText でキャレットを最後に移動します